//
// Created by PC on 2023-5-6
/*
输入一个长度为n的整数序列。
接下来再输入m个询问，每个询问输入一对l, r。
对于每个询问，输出原序列中从第l个数到第r个数的和。
输入格式
第一行包含两个整数n和m。
第二行包含n个整数，表示整数数列。
接下来m行，每行包含两个整数l和r，表示一个询问的区间范围。
输出格式
共m行，每行输出一个询问的结果。
数据范围
1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素的值≤1000
输入样例：
5 3
2 1 3 6 4
1 2
1 3
2 4
输出样例：
3
6
10
原文链接：https://blog.csdn.net/qq_44643644/article/details/108768485
 * */
// 前缀和练习 原始数组不变
#include <iostream>
#include "../arrUtil.h"

using namespace std;


int main()
{
    int n, m;
    cin >> n >> m;
    // 原始数组
    int a[n];
    for (int i = 0; i < n; ++i)
    { cin>>a[i]; }
    // 前缀和数组 两种方法计算
    n++;
    int s1[n] = {0};
    int s2[n] = {0};
    for (int i = 1; i < n; ++i)
    {
        s1[i] = s1[i - 1] + a[i-1];
    }
    for (int i = 0; i < n - 1; ++i)
    {
        // 有问题
        s2[i + 1] = s2[i] + a[i ];
    }
//    printArr(s1, n);
//    printArr(s2, n);
    while(m--)
    {
        // 计算原数组r,l之间的和
        int l = 2, r = 4;
        cin>>l>>r;
        cout << s1[r] - s1[l - 1] << endl;
    }
    return 0;
}
